import java.io.File;
import java.util.Scanner;

public class Demo13 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        //1. 先让用户输入一个要扫描的目录
        System.out.println("请输入要扫描的路径: ");
        String path = scanner.next();
        File rootPath = new File(path);
        if(!rootPath.isDirectory()){
            System.out.println("输入扫描的路径有误!!!");
            return;
        }

        //2. 再让用户输入一个要查询的的关键词
        System.out.println("请输入要删除文件的关键词: ");
        String word = scanner.next();

        //3. 可以进行递归的扫描
        scanDir(rootPath, word);
    }

    private static void scanDir(File rootPath, String word){
        //1. 列出rootPath中所有的文件和目录
        File[] files = rootPath.listFiles();
        if(files == null)
        {
            //当前目录为null, 就可以直接返回了
            return;
        }

        //2. 遍历这里的每个元素, 针对不同类型做出不同的处理
        for(File file : files)
        {
            System.out.println("当前扫描的文件: " + file.getAbsolutePath());
            if(file.isFile())
            {
                //普通文件, 检查文件是否要删除, 并执行删除动作
                checkDelete(file, word);
            }
            else {
                //目录， 递归的在去判定子目录里包含的内容
                scanDir(file, word);
            }
        }
    }

    private static void checkDelete(File file, String word)
    {
        if(!file.getName().contains(word))
        {
            //不必删除
            return;
        }

        //需要删除
        System.out.println("当前文件为: " + file.getAbsolutePath() + ", 请确认是否要删除(Y/n): ");
        Scanner scanner = new Scanner(System.in);
        String choice = scanner.next();
        if(choice.equals("Y") || choice.equals("y"))
        {
            file.delete();
            System.out.println("删除完毕!");
        }
        else
        {
            System.out.println("取消删除");
        }
    }
}
